﻿using System.Collections.Generic;

using Dynamic.Core.Types;

namespace Dynamic.Core.Generation
{
    /// <summary>
    /// 代码生成器基类
    /// </summary>
    public abstract class GeneratorBase
    {
        /// <summary>
        /// Generators this instance.
        /// </summary>
        public void Generator()
        {
            Generator(EntityConfigInfo.DefaultPath, EntityConfigInfo.DefaultGenerateType, EntityConfigInfo.DefaultLanguageType, string.Empty, null);
        }
        /// <summary>
        /// Generators this instance.
        /// </summary>
        public void Generator(string savePath)
        {
            Generator(savePath, EntityConfigInfo.DefaultGenerateType, EntityConfigInfo.DefaultLanguageType, string.Empty, null);
        }
        /// <summary>
        /// Generators this instance.
        /// </summary>
        public void Generator(string savePath, GenerateType generateType)
        {
            Generator(savePath, generateType, EntityConfigInfo.DefaultLanguageType, string.Empty, null);
        }
        /// <summary>
        /// Generators this instance.
        /// </summary>
        public void Generator(string savePath, GenerateType generateType, GenerateLanguageType langrageType)
        {
            Generator(savePath, generateType, langrageType, string.Empty, null);
        }
        /// <summary>
        /// Generators this instance.
        /// </summary>
        public void Generator(string savePath, GenerateType generateType, GenerateLanguageType langrageType, string schema)
        {
            Generator(savePath, generateType, langrageType, schema, null);
        }
        /// <summary>
        /// Generators this instance.
        /// </summary>
        public void Generator(string savePath, GenerateType generateType, GenerateLanguageType langrageType, List<string> exclude)
        {
            Generator(savePath, generateType, langrageType, string.Empty, exclude);
        }
        /// <summary>
        /// Generators this instance.
        /// </summary>
        public abstract void Generator(string savePath, GenerateType generateType, GenerateLanguageType langrageType, string schema, List<string> exclude);
    }
}
